package com.uniknow.app.widget;

import java.util.Timer;
import java.util.TimerTask;

import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.uniknow.app.R;

/**
 * 类名称：FootBtn   
 * 类描述：自定义底部菜单栏控件
 * @创建者：韩创    
 * @创建时间：2014年10月22日   
 * @变更记录：2014年10月22日下午5:28:49 by 记录变更人
 */
public class FootBtnView extends RelativeLayout{
	private Context mContext;
	/**
	 * 按钮个数
	 */
	private final int MAX = 5;
	/**
	 * 底部按钮容器
	 */
	private LinearLayout footBtnPanel;
	/**
	 * 底部按钮组
	 */
	private TextView[] footBtns= new TextView[MAX];
	/**
	 * 底部按钮图片组
	 */
	private int[] footImgs = new int[MAX*2];
	/**
	 * 底部按钮文字
	 */
	private String[] footStr = new String[MAX];
	/**
	 * 底部按钮单击监听
	 */
	private OnFootBtnClickListener mFootBtnListener;
	/**
	 * 底部按钮字体颜色
	 */
	private int footBtnColor[] = {Color.rgb(77, 77, 77),Color.rgb(58, 150, 230)};
	/**
	 * 按钮最大可点击时间间隔
	 */
	private boolean timerStatus = true;
	private final int ENABLETIME = 200;
	private Timer timer;
	private TimerTask task;
	private Handler mHandler = new Handler(){

		@Override
		public void handleMessage(Message msg) {
			// TODO 设置按钮可用状态
			super.handleMessage(msg);
			for(TextView footBtn:footBtns){
				   footBtn.setEnabled(true);
			}
			cancelTimerRegis();
		}
		
	};
	
	
	public FootBtnView(Context context) {
		super(context);
		mContext = context;
	}
	
	public FootBtnView(Context context, AttributeSet attrs) {
		super(context, attrs);
		mContext = context;
	}

	public FootBtnView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		mContext = context;
	}
	
	public void init(int[] footImgs,String[] footStr){
		this.footImgs = footImgs;
		this.footStr = footStr;
		initFootBtnPanel();
		this.addView(footBtnPanel);
		SetFootBtnStatus(0);
		this.setGravity(Gravity.CENTER_VERTICAL);
		this.setBackgroundColor(mContext.getResources().getColor(R.color.white));
	}
	/**
	 * 方法名：initBtnPanel
	 * 描述：初始化底部按钮容器对象
	 * @参数：   参数名  参数类型   参数描述
	 * @返回值类型： void   
	 * @创建时间：  2014年10月22日 
	 * @创建者：韩创
	 * @变更记录：2014年10月22日下午5:37:25 by
	 */
	private void initFootBtnPanel(){
		LinearLayout.LayoutParams footBtnPanelParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);
		footBtnPanel = new LinearLayout(mContext);
		footBtnPanel.setLayoutParams(footBtnPanelParams);
		footBtnPanel.setOrientation(LinearLayout.HORIZONTAL);
		
		LinearLayout.LayoutParams footBtnParams = new LinearLayout.LayoutParams(0,ViewGroup.LayoutParams.MATCH_PARENT);
		
		for(int i=0;i<MAX;i++){
			footBtns[i] = new TextView(mContext);
			footBtnParams.weight = 1f;
			footBtns[i].setLayoutParams(footBtnParams);
			footBtns[i].setText(footStr[i]);
			if(footImgs.length>MAX){
				Drawable drawable=getResources().getDrawable(footImgs[i]);
				drawable.setBounds(0, 0, drawable.getIntrinsicWidth()*4/6, drawable.getIntrinsicHeight()*4/6);
				footBtns[i].setCompoundDrawables(null,drawable,null,null);
			}
			footBtns[i].setGravity(Gravity.CENTER);
			footBtns[i].setTextColor(footBtnColor[0]);
			footBtns[i].setBackgroundResource(R.drawable.bg_button_selector);
			footBtns[i].setPadding(0, 10, 0, 0);
			if(i!=0){
				//只显示一个
				footBtns[i].setVisibility(View.GONE);
			}
			footBtnPanel.addView(footBtns[i]);
			final int pos = i;
			footBtns[pos].setOnClickListener(new View.OnClickListener() {
				
				@Override
				public void onClick(View v) {
					   if(null == timer){
							timer = new Timer(true);	
					   }
					   
					   if(null == task){
						   task = new TimerTask() {
								@Override
								public void run() {						
									mHandler.sendEmptyMessage(0);
								}
							};
					   }
					   for(TextView footBtn:footBtns){
						   footBtn.setEnabled(false);
					   }
					   if(timerStatus){
						   timerStatus = false;
					       timer.schedule(task , ENABLETIME);//延时200ms后执行
					   }
				    
					if(mFootBtnListener != null){
						mFootBtnListener.onClick(v, pos);
						SetFootBtnStatus(pos);
					}
				}
			});
		}
	}
	/**
	 * 
	 * 方法名：SetFootBtnStatus
	 * 描述：设置按钮选中状态
	 * @参数：   参数名  参数类型   参数描述
	 * @返回值类型： void   
	 * @创建时间：  2014年10月23日 
	 * @创建者：韩创
	 * @变更记录：2014年10月23日上午9:52:07 by
	 */
	private void SetFootBtnStatus(int pos){
		for(int i=0;i<MAX;i++){
			footBtns[i].setTextColor(footBtnColor[0]);
			if(footImgs.length>=MAX){
				Drawable drawable=getResources().getDrawable(footImgs[i]);
				drawable.setBounds(0, 0, drawable.getIntrinsicWidth()*4/6, drawable.getIntrinsicHeight()*4/6);
				footBtns[i].setCompoundDrawables(null,drawable,null,null);
			}
		}
		footBtns[pos].setTextColor(footBtnColor[1]);
		if(footImgs.length>=MAX*2){
			Drawable drawable=getResources().getDrawable(footImgs[pos+MAX]);
			drawable.setBounds(0, 0, drawable.getIntrinsicWidth()*4/6, drawable.getIntrinsicHeight()*4/6);
			footBtns[pos].setCompoundDrawables(null,drawable,null,null);
		}
		
	}
	
	/**
	 * 取消计时器
	 */
	public void cancelTimerRegis(){
		if(null != timer){
			
			task.cancel();
			task = null;			
			timer.cancel(); //退出计时器
			timer.purge();  
            timer = null; 
            mHandler.removeMessages(1);
            timerStatus = true;
		}
	}
	
	/**
	 * 方法名：setOnFootBtnClickListener
	 * 描述：添加监听
	 * @参数：   参数名  参数类型   参数描述
	 * @返回值类型： void   
	 * @创建时间：  2014年10月23日 
	 * @创建者：韩创
	 * @变更记录：2014年10月23日上午11:44:54 by
	 */
	public void setOnFootBtnClickListener(OnFootBtnClickListener listener){
		mFootBtnListener = listener;
	}
	/**
	 * 方法名：getFootBtnColor
	 * 描述：设置按钮文字颜色
	 * @参数：   参数名  参数类型   参数描述
	 * @返回值类型： int[]   
	 * @创建时间：  2014年10月23日 
	 * @创建者：韩创
	 * @变更记录：2014年10月23日上午11:45:33 by
	 */
	public int[] getFootBtnColor() {
		return footBtnColor;
	}
	
	/**
	 * FootBtn单击监听
	 * 类名称：OnFootBtnClickListener   
	 * 类描述：底部按钮单击监听 pos单击的按钮是第几个   
	 * @创建者：韩创    
	 * @创建时间：2014年10月23日   
	 * @变更记录：2014年10月23日上午9:36:36 by 记录变更人
	 */
	public interface OnFootBtnClickListener {
		public void onClick(View v,int pos);
	}
	
	/**
	 * 方法名：callOnclick
	 * 描述：点击底部按钮
	 * @参数：   参数名  参数类型   参数描述
	 * @返回值类型： void   
	 * @创建时间：  2015年2月4日 
	 * @创建者：韩创
	 * @变更记录：2015年2月4日下午2:47:46 by
	 */
	public void callOnclick(int pos){
		footBtns[pos].performClick();
		if(mFootBtnListener!=null){
			mFootBtnListener.onClick(footBtns[pos], pos);
		}
	}
	
}

/**
 * 		footBtnView = (FootBtnView) findViewById(R.id.footBtnView1);
		String text[] = {"菜单1","菜单2","菜单3","菜单4","菜单5"};
		int img[] = {
				R.drawable.ic_menu_nomal,R.drawable.ic_menu_nomal,R.drawable.ic_menu_nomal,R.drawable.ic_menu_nomal,R.drawable.ic_menu_nomal,
				R.drawable.ic_menu_selected,R.drawable.ic_menu_selected,R.drawable.ic_menu_selected,R.drawable.ic_menu_selected,R.drawable.ic_menu_selected
				};
		footBtnView.init(img,text);
		
		footBtnView.setOnFootBtnClickListener(new OnFootBtnClickListener() {
			
			@Override
			public void onClick(View v, int pos) {
				pos = pos + 1;
				Toast.makeText(MainActivity.this, "餐单"+pos, Toast.LENGTH_SHORT).show();
			}
		});
 * */ 
